<?php

class Api_Home extends PhalApi_Api
{

    public function getRules()
    {
        return array(
            'getHot' => array(
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'getFollow' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'getNew' => array(
                'lng' => array('name' => 'lng', 'type' => 'string', 'desc' => '经度值'),
                'lat' => array('name' => 'lat', 'type' => 'string', 'desc' => '纬度值'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'search' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '用户ID'),
                'key' => array('name' => 'key', 'type' => 'string', 'default' => '', 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'defaultSearch' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'getNearby' => array(
                'lng' => array('name' => 'lng', 'type' => 'string', 'desc' => '经度值'),
                'lat' => array('name' => 'lat', 'type' => 'string', 'desc' => '纬度值'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'getRecommend' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '用户ID'),
            ),
            //推荐主播显示
            'getRecommendHost' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '用户ID'),
            ),

            //直播列表
            'getLiveList' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '用户ID'),
                'type' => array('name' => 'type', 'type' => 'int', 'require' => true, 'min' => 1, 'desc' => '直播类型'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'attentRecommend' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'desc' => '用户ID'),
                'touid' => array('name' => 'touid', 'type' => 'string', 'desc' => '关注用户ID，多个用,分隔'),
            ),
            'profitList' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
                'type' => array('name' => 'type', 'type' => 'string', 'default' => 'day', 'desc' => '参数类型，day表示日榜，week表示周榜，month代表月榜，total代表总榜'),
            ),
            //明星榜
            'starList' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
                'type' => array('name' => 'type', 'type' => 'string', 'default' => 'day', 'desc' => '参数类型，day表示日榜，week表示周榜，month代表月榜，total代表总榜'),
            ),
            //家族榜
            'familyList' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
                'type' => array('name' => 'type', 'type' => 'string', 'default' => 'day', 'desc' => '参数类型，day表示日榜，week表示周榜，month代表月榜，total代表总榜'),
            ),

            'consumeList' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
                'type' => array('name' => 'type', 'type' => 'string', 'default' => 'day', 'desc' => '参数类型，day表示日榜，week表示周榜，month代表月榜，total代表总榜'),
            ),

            'getClassLive' => array(
                'liveclassid' => array('name' => 'liveclassid', 'type' => 'int', 'default' => '0', 'desc' => '直播分类ID'),
                'p' => array('name' => 'p', 'type' => 'int', 'default' => '1', 'desc' => '页数'),
            ),

            'getLiveClass' => array(
                'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
            ),

        );
    }

    /**
     * 配置信息
     * @desc 用于获取配置信息
     * @return int code 操作码，0表示成功
     * @return array info
     * @return array info[0] 配置信息
     * @return object info[0].guide 引导页
     * @return string info[0].guide.switch 开关，0关1开
     * @return string info[0].guide.type 类型，0图片1视频
     * @return string info[0].guide.time 图片时间
     * @return array  info[0].guide.list
     * @return string info[0].guide.list[].thumb 图片、视频链接
     * @return string info[0].guide.list[].href 页面链接
     * @return string msg 提示信息
     */
    public function getConfig()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $info = getConfigPub();
        $info_pri = getConfigPri();

        $list = getLiveClass();

        $level = getLevelList();

        foreach ($level as $k => $v) {
            unset($v['level_up']);
            unset($v['addtime']);
            unset($v['id']);
            unset($v['levelname']);
            $level[$k] = $v;
        }

        $levelanchor = getLevelAnchorList();

        foreach ($levelanchor as $k => $v) {
            unset($v['level_up']);
            unset($v['addtime']);
            unset($v['id']);
            unset($v['levelname']);
            $levelanchor[$k] = $v;
        }

        $info['liveclass'] = $list;

        $info['level'] = $level;

        $info['levelanchor'] = $levelanchor;

        $info['tximgfolder'] = $info_pri['tximgfolder'];//腾讯云图片存储目录
        $info['txvideofolder'] = $info_pri['txvideofolder'];//腾讯云视频存储目录
        $info['txcloud_appid'] = $info_pri['txcloud_appid'];//腾讯云视频APPID
        $info['txcloud_region'] = $info_pri['txcloud_region'];//腾讯云视频地区
        $info['txcloud_bucket'] = $info_pri['txcloud_bucket'];//腾讯云视频存储桶
        $info['cloudtype'] = $info_pri['cloudtype'];//视频云存储类型
        $info['qiniu_domain'] = $info_pri['qiniu_domain_url'];//七牛云存储空间地址（后台配置）
        $info['video_audit_switch'] = $info_pri['video_audit_switch']; //视频审核是否开启

        /* 引导页 */
        $domain = new Domain_Guide();
        $guide_info = $domain->getGuide();

        $info['guide'] = $guide_info;

        $rs['info'][0] = $info;

        return $rs;
    }

    /**
     * 登录方式开关信息
     * @desc 用于获取登录方式开关信息
     * @return int code 操作码，0表示成功
     * @return array info
     * @return array info[0].login_type 开启的登录方式
     * @return string info[0].login_type[][0] 登录方式标识
     * @return string msg 提示信息
     */
    public function getLogin()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $info = getConfigPub();
        $rs['info'][0]['login_type'] = $info['login_type'];

        return $rs;
    }

    /**
     * 获取热门主播
     * @desc 用于获取首页热门主播
     * @return int code 操作码，0表示成功
     * @return array info
     * @return array info[0]['slide']
     * @return string info[0]['slide'][].slide_pic 图片
     * @return string info[0]['slide'][].slide_url 链接
     * @return array info[0]['list'] 热门直播列表
     * @return string info[0]['list'][].uid 主播id
     * @return string info[0]['list'][].avatar 主播头像
     * @return string info[0]['list'][].avatar_thumb 头像缩略图
     * @return string info[0]['list'][].user_nicename 直播昵称
     * @return string info[0]['list'][].title 直播标题
     * @return string info[0]['list'][].city 主播位置
     * @return string info[0]['list'][].stream 流名
     * @return string info[0]['list'][].pull 播流地址
     * @return string info[0]['list'][].nums 人数
     * @return string info[0]['list'][].thumb 直播封面
     * @return string info[0]['list'][].level_anchor 主播等级
     * @return string info[0]['list'][].game 游戏名称
     * @return string info[0]['list'][].type 直播类型
     * @return string info[0]['list'][].goodnum 靓号
     * @return string msg 提示信息
     */
    public function getHot()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $domain = new Domain_Home();
        $key1 = 'getSlide';
        $slide = getcaches($key1);
        if (!$slide) {
            $slide = $domain->getSlide();
            setcaches($key1, $slide);
        }

        $key2 = "getHot_" . $this->p;
        $list = getcaches($key2);
        if (!$list) {
            $list = $domain->getHot($this->p);
            setCaches($key2, $list, 2);
        }

        $rs['info'][0]['slide'] = $slide;
        $rs['info'][0]['list'] = $list;

        return $rs;
    }

    /**
     * 获取关注主播列表
     * @desc 用于获取用户关注的主播的直播列表
     * @return int code 操作码，0表示成功
     * @return string info[0]['title'] 提示标题
     * @return string info[0]['des'] 提示描述
     * @return array info[0]['list'] 直播列表
     * @return string info[0]['list'][].uid 主播id
     * @return string info[0]['list'][].avatar 主播头像
     * @return string info[0]['list'][].avatar_thumb 头像缩略图
     * @return string info[0]['list'][].user_nicename 直播昵称
     * @return string info[0]['list'][].title 直播标题
     * @return string info[0]['list'][].city 主播位置
     * @return string info[0]['list'][].stream 流名
     * @return string info[0]['list'][].pull 播流地址
     * @return string info[0]['list'][].nums 人数
     * @return string info[0]['list'][].thumb 直播封面
     * @return string info[0]['list'][].level_anchor 主播等级
     * @return string info[0]['list'][].game 游戏名称
     * @return string info[0]['list'][].type 直播类型
     * @return string info[0]['list'][].goodnum 靓号
     * @return string msg 提示信息
     */
    public function getFollow()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $domain = new Domain_Home();
        $info = $domain->getFollow($this->uid, $this->p);


        $rs['info'][0] = $info;

        return $rs;
    }

    /**
     * 获取最新主播
     * @desc 用于获取首页最新开播的主播列表
     * @return int code 操作码，0表示成功
     * @return array info 主播列表
     * @return string info[].uid 主播id
     * @return string info[].avatar 主播头像
     * @return string info[].avatar_thumb 头像缩略图
     * @return string info[].user_nicename 直播昵称
     * @return string info[].title 直播标题
     * @return string info[].city 主播位置
     * @return string info[].stream 流名
     * @return string info[].pull 播流地址
     * @return string info[].nums 人数
     * @return string info[].distance 距离
     * @return string info[].thumb 直播封面
     * @return string info[].level_anchor 主播等级
     * @return string info[].game 游戏名称
     * @return string info[].type 直播类型
     * @return string info[].goodnum 靓号
     * @return string msg 提示信息
     */
    public function getNew()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $lng = checkNull($this->lng);
        $lat = checkNull($this->lat);
        $p = checkNull($this->p);

        if (!$p) {
            $p = 1;
        }

        $key = 'getNew_' . $p;
        $info = $this->getcaches($key);
        if (!$info) {
            $domain = new Domain_Home();
            $info = $domain->getNew($lng, $lat, $p);

            $this->setCaches($key, $info, 2);
        }

        $rs['info'] = $info;

        return $rs;
    }

    /**
     * 搜索
     * @desc 用于首页搜索会员
     * @return int code 操作码，0表示成功
     * @return array info 会员列表
     * @return string info[].id 用户ID
     * @return string info[].user_nicename 用户昵称
     * @return string info[].avatar 头像
     * @return string info[].sex 性别
     * @return string info[].signature 签名
     * @return string info[].level 等级
     * @return string info[].isattention 是否关注，0未关注，1已关注
     * @return string msg 提示信息
     */
    public function search()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);
        $key = checkNull($this->key);
        $p = checkNull($this->p);
        if ($key == '') {
            $rs['code'] = 1001;
            $rs['msg'] = "请填写关键词";
            return $rs;
        }

        if (!$p) {
            $p = 1;
        }

        $domain = new Domain_Home();
        $info = $domain->search($uid, $key, $p);

        $rs['info'] = $info;

        return $rs;
    }

    /**
     * 搜索默认
     * @desc 用于首页搜索会员默认列表
     * @return int code 操作码，0表示成功
     * @return array info 会员列表
     * @return string info[].id 用户ID
     * @return string info[].user_nicename 用户昵称
     * @return string info[].avatar 头像
     * @return string info[].sex 性别
     * @return string info[].signature 签名
     * @return string info[].level 等级
     * @return string info[].isattention 是否关注，0未关注，1已关注
     * @return string msg 提示信息
     */
    public function defaultSearch()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);
        $p = checkNull($this->p);

        if (!$p) {
            $p = 1;
        }

        $domain = new Domain_Home();
        $info = $domain->defaultSearch($uid, $p);

        $rs['info'] = $info;

        return $rs;
    }


    /**
     * 获取附近主播
     * @desc 用于获取附近开播的主播列表
     * @return int code 操作码，0表示成功
     * @return array info 主播列表
     * @return string info[].uid 主播id
     * @return string info[].avatar 主播头像
     * @return string info[].avatar_thumb 头像缩略图
     * @return string info[].user_nicename 直播昵称
     * @return string info[].title 直播标题
     * @return string info[].province 省份
     * @return string info[].city 主播位置
     * @return string info[].stream 流名
     * @return string info[].pull 播流地址
     * @return string info[].nums 人数
     * @return string info[].distance 距离
     * @return string info[].thumb 直播封面
     * @return string info[].level_anchor 主播等级
     * @return string info[].game 游戏名称
     * @return string info[].type 直播类型
     * @return string info[].goodnum 靓号
     * @return string msg 提示信息
     */
    public function getNearby()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $lng = checkNull($this->lng);
        $lat = checkNull($this->lat);
        $p = checkNull($this->p);

        if ($lng == '') {
            return $rs;
        }

        if ($lat == '') {
            return $rs;
        }

        if (!$p) {
            $p = 1;
        }

        $key = 'getNearby_' . $lng . '_' . $lat . '_' . $p;
        $info = getcaches($key);
        if (!$info) {
            $domain = new Domain_Home();
            $info = $domain->getNearby($lng, $lat, $p);

            setcaches($key, $info, 2);
        }

        $rs['info'] = $info;

        return $rs;
    }

    /**
     * 推荐主播
     * @desc 用于显示推荐主播
     * @return int code 操作码，0表示成功
     * @return array info 会员列表
     * @return string info[].id 用户ID
     * @return string info[].user_nicename 用户昵称
     * @return string info[].avatar 头像
     * @return string info[].fans 粉丝数
     * @return string info[].isattention 是否关注，0未关注，1已关注
     * @return string msg 提示信息
     */
    public function getRecommend()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);

        $key = 'getRecommend';
        $info = getcaches($key);
        if (!$info) {
            $domain = new Domain_Home();
            $info = $domain->getRecommend();

            setcaches($key, $info, 60 * 10);
        }

        foreach ($info as $k => $v) {
            $info[$k]['isattention'] = (string)isAttention($uid, $v['id']);
        }

        $rs['info'] = $info;

        return $rs;
    }

    /**
     * 推荐主播列表
     * @desc 用于显示推荐主播
     * @return int code 操作码，0表示成功
     * @return array info 会员列表
     * @return string info[].id 用户ID
     * @return string info[].user_nicename 用户昵称
     * @return string info[].avatar 头像
     * @return string info[].fans 粉丝数
     * @return string info[].isattention 是否关注，0未关注，1已关注
     * @return string msg 提示信息
     */
    public function getRecommendHost()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);

        $domain = new Domain_Home();
        $info = $domain->getRecommendHost($uid);

        $rs['info'] = $info;

        return $rs;
    }


    /**
     * 新星主播
     * @desc 用于显示新星主播
     * @return int code 操作码，0表示成功
     * @return array info 会员列表
     * @return string info[].id 用户ID
     * @return string info[].user_nicename 用户昵称
     * @return string info[].avatar 头像
     * @return string info[].fans 粉丝数
     * @return string info[].isattention 是否关注，0未关注，1已关注
     * @return string msg 提示信息
     */
    public function getLiveList()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);
        $p = checkNull($this->p);
        $type = checkNull($this->type);
        $domain = new Domain_Home();

        $key1 = 'getSlide';
        $slide = getcaches($key1);
        if (!$slide) {
            $slide = $domain->getSlide();
            setcaches($key1, $slide);
        }

        $key = 'getLiveList';
        $info = getcaches($key);
        if (!$info) {
            $info = $domain->getLiveList($p, $type);
            setcaches($key, $info, 60 * 10);
        }

        foreach ($info as $k => $v) {
            $info[$k]['isattention'] = (string)isAttention($uid, $v['id']);
        }

        $rs['info'][0]['slide'] = $slide;
        $rs['info'][0]['list'] = $info;

        return $rs;
    }

    /**
     * 关注推荐主播
     * @desc 用于关注推荐主播
     * @return int code 操作码，0表示成功
     * @return array info
     * @return string msg 提示信息
     */
    public function attentRecommend()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());

        $uid = checkNull($this->uid);
        $touid = checkNull($this->touid);

        if ($uid < 1) {
            $rs['code'] = 1001;
            $rs['msg'] = "参数错误";
            return $rs;
        }
        if ($touid == '') {
            $rs['code'] = 1001;
            $rs['msg'] = "请选择要关注的主播";
            return $rs;
        }

        $domain = new Domain_Home();
        $info = $domain->attentRecommend($uid, $touid);

        //$rs['info'] = $info;

        return $rs;
    }

    /**
     * 收益榜单
     * @desc 获取收益榜单
     * @return int code 操作码 0表示成功
     * @return string msg 提示信息
     * @return array info
     * @return string info[0]['user_nicename'] 主播昵称
     * @return string info[0]['avatar_thumb'] 主播头像
     * @return string info[0]['totalcoin'] 主播钻石数
     * @return string info[0]['uid'] 主播id
     * @return string info[0]['levelAnchor'] 主播等级
     * @return string info[0]['isAttention'] 是否关注主播 0 否 1 是
     **/

    public function profitList()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $uid = checkNull($this->uid);
        $p = checkNull($this->p);
        $type = checkNull($this->type);
        $domain = new Domain_Home();
        $res = $domain->profitList($uid, $type, $p);

        $rs['info'] = $res;
        return $rs;
    }

    /**
     * 收益榜单
     * @desc 获取收益榜单
     * @return int code 操作码 0表示成功
     * @return string msg 提示信息
     * @return array info
     * @return string info[0]['user_nicename'] 用户昵称
     * @return string info[0]['avatar_thumb'] 用户头像
     * @return string info[0]['totalcoin'] 用户钻石数
     * @return string info[0]['uid'] 用户id
     * @return string info[0]['levelAnchor'] 用户等级
     * @return string info[0]['isAttention'] 是否关注用户 0 否 1 是
     **/

    public function consumeList()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $uid = checkNull($this->uid);
        $p = checkNull($this->p);
        $type = checkNull($this->type);
        $domain = new Domain_Home();
        $res = $domain->consumeList($uid, $type, $p);

        $rs['info'] = $res;
        return $rs;
    }

    /**
     * 明星榜单
     * @desc 获取明星榜单
     * @return int code 操作码 0表示成功
     * @return string msg 提示信息
     * @return array info
     * @return string info[0]['user_nicename'] 用户昵称
     * @return string info[0]['avatar_thumb'] 用户头像
     * @return string info[0]['totalcoin'] 用户钻石数
     * @return string info[0]['uid'] 用户id
     * @return string info[0]['levelAnchor'] 用户等级
     * @return string info[0]['isAttention'] 是否关注用户 0 否 1 是
     **/

    public function starList()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $uid = checkNull($this->uid);
        $p = checkNull($this->p);
        $type = checkNull($this->type);
        $domain = new Domain_Home();
        $res = $domain->starList($uid, $type, $p);

        $rs['info'] = $res;
        return $rs;
    }

    /**
     * 家族榜单
     * @desc 获取家族榜单
     * @return int code 操作码 0表示成功
     * @return string msg 提示信息
     * @return array info
     * @return string info[0]['user_nicename'] 用户昵称
     * @return string info[0]['avatar_thumb'] 用户头像
     * @return string info[0]['totalcoin'] 用户钻石数
     * @return string info[0]['uid'] 用户id
     * @return string info[0]['levelAnchor'] 用户等级
     * @return string info[0]['isAttention'] 是否关注用户 0 否 1 是
     **/

    public function familyList()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $uid = checkNull($this->uid);
        $p = checkNull($this->p);
        $type = checkNull($this->type);
        $domain = new Domain_Home();
        $res = $domain->familyList($uid, $type, $p);

        $rs['info'] = $res;
        return $rs;
    }


    /**
     * 获取分类下的直播
     * @desc 获取分类下的直播
     * @return int code 操作码 0表示成功
     * @return string msg 提示信息
     * @return array info
     * @return string info[].uid 主播id
     * @return string info[].avatar 主播头像
     * @return string info[].avatar_thumb 头像缩略图
     * @return string info[].user_nicename 直播昵称
     * @return string info[].title 直播标题
     * @return string info[].city 主播位置
     * @return string info[].stream 流名
     * @return string info[].pull 播流地址
     * @return string info[].nums 人数
     * @return string info[].distance 距离
     * @return string info[].thumb 直播封面
     * @return string info[].level_anchor 主播等级
     * @return string info[].game 游戏名称
     * @return string info[].type 直播类型
     * @return string info[].goodnum 靓号
     **/

    public function getClassLive()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $liveclassid = checkNull($this->liveclassid);
        $p = checkNull($this->p);

        if (!$liveclassid) {
            return $rs;
        }
        $domain = new Domain_Home();
        $res = $domain->getClassLive($liveclassid, $p);

        $rs['info'] = $res;
        return $rs;
    }

    public function getLiveClass()
    {
        $rs = array('code' => 0, 'msg' => '', 'info' => array());
        $domain = new Domain_Home();
        $res = $domain->getLiveClass();
        $rs['info'] = $res;
        return $rs;
    }


}
